package araujoCoronelVillamayor.plantasVsZombies.domain

import java.util.ArrayList
import org.uqbar.commons.utils.Observable
import java.io.Serializable

@Observable
class Planta extends Criatura{
	static ArrayList<Mejora> mejoras
	@Property String tipo
	
	new(String nombreParametro, int ataqueParametro, int defensaParametro, String tipoPlantaParametro) {
		super(nombreParametro, ataqueParametro, defensaParametro)
		mejoras = new ArrayList<Mejora>
		tipo = tipoPlantaParametro
	}
	
	override int poderAtaque(){
		ataque + mejoras.fold(0, [ acum, mejora | acum + mejora.getMejoraOfensiva()])
	}
	
	override int poderDefensa(){
		defensa + mejoras.fold(0, [ acum, mejora | acum + mejora.getMejoraDefensiva()])
	}
	
	def agregarMejora(Mejora mejora) {
		mejoras.add(mejora)
	}
	
	def boolean sosPlantaTerrestre(){
		tipo == "Terrestre"
		//tipoPlanta.equals("Terrestre")
	}
	
	def boolean sosPlantaAcuatica(){
		tipo == "Acuatica"
		//tipoPlanta.equals("Acuatica")
	}
	
	/*
	// La Mejora como Command
	def mejorate (Mejora unaMejora){
		unaMejora.execute(this)
	}
	
	def agregarPoderAtaque(int puntos){
		ataque = ataque + puntos
	}
	
	def agregarPoderDefensa(int puntos){
		defensa = defensa + puntos
		//this.mejorarDefensaActual(puntos)
	}
	*/
	
	/*
	//-------------------------------------------------------------------------
	//MODELADO DE MEJORA EXTRAÍDO DE LAS VIEJAS SUBCLASES "Girasol" Y "Shooter"	
	//-------------------------------------------------------------------------
	protected static ArrayList<Planta> instanciasCreadas
	
	override mejorarDefensaActual(int ptosMejoraDefensaActual){
		instanciasCreadas.forEach[instancia | defensaActual = defensaActual + ptosMejoraDefensaActual]
	}
	*/
}